home *** CD-ROM | disk | FTP | other *** search
/ Practical Algorithms for Image Analysis / Practical Algorithms for Image Analysis.iso / TARFILE.GZ / tarfile / ch_4.3 / xcc / xcc.h < prev    next >
C/C++ Source or Header  |  1999-09-11  |  4KB  |  95 lines

  1. /* 
  2.  * xcc.h
  3.  * 
  4.  * Practical Algorithms for Image Analysis
  5.  * 
  6.  * Copyright (c) 1997, 1998, 1999 MLMSoftwareGroup, LLC
  7.  */
  8.  
  9. /*
  10.  * structure defs for xcc.c and related modules; required list structures 
  11.  * are defined in lldef.h
  12.  */
  13.  
  14. #ifndef _XCC_H_
  15. #define    _XCC_H_
  16.  
  17. #include "ip.h"
  18.  
  19. #define    SIGN(a)        ( ((a) == 0.0) ? 0 : ( ((a) < 0.0) ? -1 : 1 ) )
  20. #define    F_TO_INT(a)    ( ((a)-(int)(a)>0.5) ? ((int)(a)+1) : ((int)(a)) )
  21. #define    MIN(a, b)    ( ((a)<(b)) ? (a) : (b) )
  22. #define    SQR(a)        ( (a)*(a) )
  23.  
  24.  
  25. #define    MAX_REC_SIZE    1200       /* max number of disks */
  26.  
  27. typedef struct edge_tuple {     /* runs of ON-pixels on given scan row */
  28.   short cl, cr;                 /* pair of y-coord, delimiting run */
  29.   Boolean status;               /* Matched; UnMatched */
  30. } Edge_Tpl;
  31.  
  32. typedef struct triple {         /* 3-tuple: disk chords */
  33.   short r;
  34.   short cl, cr;
  35. } Trpl;
  36.  
  37. struct disk {
  38.   Trpl *chords;                 /* array of (disk) chords, of form (r, cl, cr) */
  39.   int nch;                      /* numb of chords (upper bnd set by 2*R/DELTA_i) */
  40.   Sp ctr;                       /* center position */
  41.   int rad;                      /* actual radius, based on sample of edge points */
  42.   Boolean Status;               /* Active (Incomplete), InActive (Complete) */
  43.   Boolean Type;                 /* Accept, Reject */
  44. };
  45.  
  46.  
  47. /* function prototypes */
  48. /* xcc.c */
  49. extern void displ_disk_contours (struct linklist *list, Image * imgIO, int value);
  50. extern void init_dll (struct linklist *disk_list);
  51. extern void init_etll (struct linklist *edge_tuple_list);
  52. extern int rm_llistlink (struct linklist *list);
  53. extern void tshow_disk_list (struct linklist *list);
  54. extern void show_disk_list (struct linklist *list);
  55. extern float update_disk_dia (struct linklist *list);
  56. extern void gprintf (FILE * fpOut, char *fmt,...);
  57. extern void exitmess (char *prompt, int status);
  58. extern void fail_alloc (char *str, int status);
  59. extern void usage (char *progname);
  60. extern void main (int argc, char **argv);
  61. /* circ_geom.c */
  62. extern double slopev (struct spoint pt1, struct spoint pt2);
  63. extern struct spoint eval_centroid (int *x, int *y, int n);
  64. extern struct spoint eval_ctr (struct spoint *v, int n);
  65. extern int eval_rad (struct disk *cdsk);
  66. extern int eval_circ (struct disk *cdsk);
  67. /* cc.c */
  68. extern int init_disk (struct disk *ndsk, int nch);
  69. extern int close_disk (struct disk *cdsk);
  70. extern int flag_disk (struct disk *cdsk);
  71. extern void fetch_edge_det (float *ef, int nf);
  72. extern void edge_det (unsigned char *y, int n, float *f, int nf);
  73. extern double pbi_ctr (int ir, struct edge_tuple *cetpl,
  74.                        struct triple *cdsk_lchrd);
  75. extern Boolean insp_Adsk (int ir,
  76.                           struct edge_tuple *cetpl, struct disk *cdsk);
  77. extern int find_cdsk_lchrd (int ir, struct disk *cdsk);
  78. extern struct linktype *find_all_Adsks (struct linklist *dll);
  79. extern struct linktype *find_next_Adsk (struct linklist *dll);
  80. extern void ndsk_to_dll (char *ndsk, struct linklist *dll);
  81. extern Boolean chord_to_Adsk (int ir, int nch, struct edge_tuple *cetpl,
  82.                               struct disk *cdsk, int disk_type, int ncch);
  83. extern int find_segm_shift (struct triple *chrd, struct edge_tuple *cetpl);
  84. extern int find_segm_ovlp (struct triple *chrd, struct edge_tuple *cetpl);
  85. extern int update_disk_list (int ir, int nch,
  86.                              struct linklist *dll, struct linklist *etll);
  87. extern Boolean ReptSegmStatus (struct edge_tuple *letpl, int pix);
  88. extern int encode_row (unsigned char *row, int nc, struct linklist *etll, int gray_lev);
  89. /* test_xcc.c */
  90. extern int fetch_test_parms (FILE * file, float *dsk_dia,
  91.                              int *del_ir, int *nch, int *ir_base);
  92. extern int fetch_test_row (FILE * file, struct linklist *etll);
  93.  
  94. #endif  /*_XCC_H_ */ :
  95.